package code

import (
	"fmt"
	"io"
	"log"
	"os"
)

func Seeker01() {

	// 打开模式(第二个参数)
	// - O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件
	// - O_CREATE int = syscall.O_CREAT // 创建文件
	// - O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件
	// - O_RDWR int = syscall.O_RDWR // 读写模式打开文件
	// - O_TRUNC int = syscall.O_TRUNC // 如果可能，截断文件
	// - O_APPEND int = syscall.O_APPEND // 追加模式打开文件
	file, err := os.OpenFile("./test.txt", os.O_RDWR, 655)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer file.Close()

	//whence(第二个参数)
	// - SeekStart = 0 // 基于文件开始位置
	// - SeekCurrent = 1 // 基于当前位置
	// - SeekEnd = 2 // 基于文件结尾位置
	_, err = file.Seek(4, io.SeekStart)
	if err != nil {
		log.Fatal(err)
	}

	_, ererr := file.Write([]byte("faith"))
	if ererr != nil {
		log.Fatal(ererr)
	}
}
